"""
该脚本用于批量设置文件夹下文件的名称
fixedlength函数用于将文件名命名为等长的文件名，若文件已经有序，使用该函数需要注释掉addcharacter、rename
"""

import os

path = r'/home/lixu/test'  # 帧存放路径

# 获取该目录下所有文件，存入列表中
fileList = os.listdir(path)


def addcharacter(fileList):
    for i in range(len(fileList)):
        # 设置旧文件名（就是路径+文件名）
        oldname = path + os.sep + fileList[i]  # os.sep添加系统分隔符
        # 设置新文件名
        newname = path + os.sep +'a' +str(i) + '.png'
        os.rename(oldname, newname)  # 用os模块中的rename方法对文件改名
        print(oldname, '======>', newname)

def rename(fileList):
    for i in range(len(fileList)):
        # 设置旧文件名（就是路径+文件名）
        oldname = path + os.sep + fileList[i]  # os.sep添加系统分隔符
        # 设置新文件名
        newname = path + os.sep + str(i) + '.png'
        os.rename(oldname, newname)  # 用os模块中的rename方法对文件改名
        print(oldname, '======>', newname)

def fixedlength(fileList,len):
    for file in fileList:
        Olddir = os.path.join(path, file)
        if os.path.isdir(Olddir):
            continue

        # os.path.splitext("path")：分离文件名与扩展名
        filename = os.path.splitext(file)[0]
        filetype = os.path.splitext(file)[1]

        # zfill() 方法返回指定长度的字符串，原字符串右对齐，前面填充0
        Newdir = os.path.join(path, filename.zfill(len) + filetype)  # 数字5是定义为5位数，可随意修改需要的
        os.rename(Olddir, Newdir)



if __name__ == '__main__':

    addcharacter(fileList) # 为了避免将同名的文件覆盖掉
    rename(fileList)  # 命名文件
    fixedlength(fileList,3)  # 将文件名改为定长，如000.txt 001.txt 3为长度

